1. Field of the Invention
The present invention relates to adapters, interfaces and connections between a computer and a network. As a specific example, the present invention is described in terms of an adapter and a communication method between a computer and a computer network that functions in accordance with an industry standard protocol such as IEEE 802.3 or one of its extensions.
2. Description of the Related Art
The present invention generally relates to an adapter for use in connecting a computer, referred to here as a client computer, to a network. The invention will be described and explained with reference to a particular implementation designed for one of the most common network configurations presently in use, commonly known as an Ethernet™ network. This type of network more generally includes those networks that implement the IEEE 802.3 standard, or one of the variations, modifications or improvements on that standard. For simplicity, all of these networks are referenced together as an IEEE 802.3 network, although that designation is not necessarily precise. The networks referenced here provide a framework for understanding the present invention, as do the adapters or network interface controllers that have been developed for those networks.
Client computers of a local area network are often connected together over a common physical link such as coaxial cable, unshielded twisted pairs of wires or shielded twisted pairs of wires. Information is transmitted by client computers onto the physical link in units of frames having one of a number of protocol-defined data structures and a quantity of data ranging from that of a minimum frame length and that of a maximum frame length. The IEEE 802.3 protocol in its simplest form allows only one client computer to transmit information over any distinct physical link at one time. If two client computers provide data to the physical link at the same time, or sufficiently close in time as to create interference between two message signals, the data are corrupted and must be discarded. Such an event is referred to as a collision and must be detected by the client computers. IEEE 802.3 networks use carrier sense multiple access/collision detection (CSMA/CD) to govern access to the physical link. Before a client computer transmits a message to the physical link, it detects whether a carrier signal is present on the physical link. If a carrier signal is present on the physical link, the client computer waits before transmitting the message until no carrier signal is present and the physical link is available.
Once a client computer determines that the physical link is available, the client computer transmits the message to the physical link and onto the network. The client computer monitors the physical link to detect any collision that might occur while it transmits the message over the physical link. The transmitting computer continues to monitor for collisions after transmission during a subsequent message in progress period of time in which the transmitting computer is waiting for the message to reach its destination. Should the client computer detect a collision, the client computer continues transmitting a signal, sometimes referred to as a jam sequence, until the transmission continues for at least a period of time corresponding to a minimum frame length. The client computer then pauses for a predetermined, random amount of time and attempts to gain access to the physical link to once again transmit the data. Each of the client computers attempting to access the physical link executes a similar backoff algorithm, but with different, randomly assigned waiting times so that a single client computer gains access to the physical link, with others of the waiting computers gaining access to the network successively.
Information is typically organized into frames for transmission over an Ethernet™ or other type of CSMA/CD network. FIG. 1 shows the organization of a frame of data for an Ethernet™ frame and FIG. 2 shows the organization for a frame defined in accordance with the standard IEEE 802.3. Both types of networks use a preamble consisting of an alternating pattern of ones and zeros to inform a receiving station that a frame is coming. The Ethernet™ preamble (FIG. 1) further includes an additional byte that is the equivalent of the start of frame byte field defined in the IEEE 802.3 network. The start of frame byte (SOF in FIG. 2) ends with two consecutive “1” bits and is used to synchronize the frame reception of the station connected to the physical link.
The framing of information for these networks includes both the destination address and the source address for the message. The destination address may be a single target computer (unicast), a group of computers (multicast) or all computers on the network (broadcast). The source address is the particular transmitting computer. Ethernet™ frames include a type field identifying the protocol of an upper layer application to receive the message. This field is not present in frames for the IEEE 802.3 network and is replaced by a length field that specifies the number of bytes of data in the message. Both frame structures provide a data field of arbitrary length within a range of possible lengths, followed by a frame check sequence (FCS), which is a four-byte cyclic redundancy check value. The FCS is created by the sending computer and is recalculated by the receiving device to check for damaged frames.
Client computers communicating frames of data over a CSMA/CD network use a network interface controller to perform carrier sense, collision detection, and other aspects of data transmission and receive control. Control of data transmission includes generating the frame format and calculating the FCS byte. Data receive control includes the detection of a frame, examining the destination address to determine if the message is intended for that computer, and performing a CRC or other frame check procedure to determine if the frame is valid. Other forms of analysis may be performed on the frame or may have to be performed when there is an error in the frame of data or in the receive operation. For example, information may have to be retransmitted if an error is detected during transmission. All of this processing is conventionally known and performed in typical adapters or controllers that link client computers to a local area CSMA/CD network.
The network interface controller is implemented as an integrated circuit, such as an application specific integrated circuit (ASIC). An example of one configuration of Ethernet controller in an ASIC, described in U.S. Pat. No. 5,872,920, is illustrated schematically in FIG. 3. The network controller ASIC 10 interfaces with a bus 20 of a host computer system and with the twisted pairs or coaxial cable that are part of the physical link 30 of the network. Information is transmitted to and received from the physical interface by a transceiver 40 or through an attachment unit interface 42. Information to be transmitted over the physical link 30 is encoded by encoder 44 and decoder 46 decodes information received from the physical link. Typically, Manchester encoding and decoding are used for IEEE 802.3 networks.
A controller 50, which may be a microcontroller or other type of processor, is typically provided as a core within the ASIC 10 to control the transmit and receive operations using appropriate transmit control 52 and receive control 54 programs or state machines. These programs handle the various data control operations required for transmitting and receiving data from a CSMA/CD network including, for example, handling error conditions for a collision on the physical medium and retransmitting corrupted data as necessary. Most all of the functionality desired to implement applicable standards, such as IEEE 802.3, is implemented within the controller 50. Data coming in and out of the controller 50 are buffered by a transmit FIFO 56 and a receive FIFO 58. Communications with the host computer, including the provision of data to the bus 20 of the host computer, are managed by the host interface 60. Provisions are made to update the host interface 60 by rewriting or updating a data set or program stored within the EEPROM 62. Further details of these routs and the functionality they implement are described in U.S. Pat. No. 5,872,920, which is hereby incorporated by reference.
It should be appreciated that, while the network interface controller of FIG. 3 is implemented as a single ASIC other configurations are also common. For example, because the physical implementations for a particular network (including driving magnetics, digital to analog circuitry and analog to digital circuitry) can vary greatly, it is often desirable to provide the encoder, decoder, transceiver and other aspects of the interface to the physical link in a dedicated chip. This architecture may be implemented as a distinct PHY chip, allowing a greater level of flexibility that is often more cost-effective than a more integrated, single-chip network interface controller solution. In implementations that provide a distinct PHY chip, it is typical to provide other aspects of the network controller on a second chip, a media access controller (MAC) chip. The MAC of the network controller shown in FIG. 3 includes the controller or processor 50 with its programs, the buffering memory and, in most cases, the host-interface 60.
Considerable effort has been made to increase the functionality provided within integrated circuit network interface controllers such as the ASIC 10 illustrated in FIG. 3. For example, additional functionality and flexibility has been built into network interface controller chips to accommodate improvements or modifications in network communications standards. Particular attention has been paid to higher speed variations of the basic IEEE 802.3 technology.